package com.blog.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import java.io.Serializable;

import java.time.LocalDateTime;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "用户实体")
public class User implements Serializable {
    //序列化
    private static final long serialVersionUID = 1L;

    //用户默认生成的id
    @ApiModelProperty("用户ID 主键")
    private Long id;

    //用于登入的用户名
    @ApiModelProperty("用户登录名")
    private String username;

    //用于登入的密码
    @ApiModelProperty(value = "登录密码", hidden = true)
    @JsonIgnore//让springmvc把当前对象转换成json字符串的时候,忽略password,最终的json字符串中就没有password这个属性了
    private String password;

    //用于展示的用户名
    @ApiModelProperty("用户昵称")
//    @TableField("nickname")
    private String nickname;

    @ApiModelProperty("用户邮箱")
    private String email;

    @ApiModelProperty("用户手机号")
    private String phone;

    //头像url地址
    @ApiModelProperty("用户头像地址")
    private String userAvatar;

    @ApiModelProperty("用户账号信息：1正常|0禁用")
    private Long status;

    //创建时间
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")//注解用于在序列化和反序列化 JSON 时指定日期时间字段的格式
    private LocalDateTime createTime;

    //修改时间
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    public void insertTime(){
        this.setCreateTime(LocalDateTime.now());
        this.setUpdateTime(LocalDateTime.now());
    }

    public void updateTime(){
        this.setUpdateTime(LocalDateTime.now());
    }
}
